package ASAExpression;

import exceptions.ExecutionException;

/**
 * Classe permettant de representer
 * la négation
 * @author O.Riad
 * @author D.Romain
 * 
 */
public class ASANegation extends ASAExpr{
    
    ASAExpr e1;
    
    /**
     * Constructeur
     * @param e1 ASAExpr sur laquelle appliquer
     * la négation
     */
    public ASANegation(ASAExpr e1){
        this.e1 = e1;
    }

    /**
     * Retourne l'expression sur laquelle
     * appliquer la négation
     * @return ASAExpr
     */
    @Override
    public ASAExpr getExpr1() {
        return e1;
    }

    /**
     * NON IMPLEMENTÉE
     * @return null
     */
    @Override
    public ASAExpr getExpr2() {
        return null;
    }

    /**
     * NOM IMPLEMENTÉE
     * @return null
     */
    @Override
    public String getLabelExplorateur()  {
        return null;
    }

    /**
     * Retourne la négation de l'ASAExpr
     * @return 1 si l'ASAExpr est évaluée à 0
     * et 0 si elle est évaluée à 1
     * @throws ExecutionException 
     */
    @Override
    public int evalue() throws ExecutionException {
        int val = this.e1.evalue();
        if(val == 0)
            return 1;
        if(val == 1)
            return 0;
        
        return val;
    }

}
